﻿Imports System.Data.Odbc

Public Class db
    ''' <summary>
    ''' Obtiene el directorio donde está almacenada la base de datos
    ''' </summary>
    ''' <returns>
    ''' La ruta del directorio de la BD
    ''' Regresa una cadena vacía cuando el directorio no existe
    ''' </returns>
    ''' <remarks></remarks>
    Public Shared Function getRutaBD() As String
        Dim indexInic As Int16 = My.Settings.cs.ToLower.IndexOf("dbq=") + 4
        Dim indexFin As Int16 = My.Settings.cs.ToLower.LastIndexOf(".mdb") + 4
        Dim strDirectorioBD As String = System.IO.Path.GetDirectoryName(My.Settings.cs.ToLower.Substring(indexInic, _
                                                                                                   indexFin - indexInic))
        If (System.IO.Directory.Exists(strDirectorioBD)) Then
            getRutaBD = strDirectorioBD
        Else
            getRutaBD = ""
        End If
    End Function

    ''' **************************************************************************************************************
    ''' Metodo: ExecScalar
    '''         Ejecuta una instrucción Sql o un Procedimiento almacenado retornando únicamente un valor
    ''' 
    ''' Parámetros:
    '''         instrSql - Cadena que contienen la instrucción SQL o el procedimiento almacenado a ejecutar
    '''         commType - Tipo de comando a ejecutar:  StoredProcedure, TableDirect, Text
    '''         arrParms - Arreglo de parámetros que se utilizarán en la consulta
    '''         cadConex - Cadena de conexión a la base de datos
    ''' 
    ''' Return:
    '''         De tipo object el resultado de la consulta.
    ''' **************************************************************************************************************
    Public Shared Function ExecScalar(ByVal instrSql As String, ByVal commType As CommandType, ByVal arrParams() As OdbcParameter, ByVal cadconex As String) As Object
        Dim retorno As Object
        Using myConn As OdbcConnection = New OdbcConnection(cadconex)
            Using myComm As New OdbcCommand(instrSql, myConn)
                myComm.CommandType = commType
                If (Not arrParams Is Nothing) Then
                    myComm.Parameters.AddRange(arrParams)
                End If
                myConn.Open()
                Try
                    retorno = myComm.ExecuteScalar()
                Catch ex As Exception
                    retorno = Nothing
                End Try
            End Using
        End Using
        Return retorno
    End Function
End Class